package net.dodoman;

import java.util.Arrays;

import org.junit.Test;

public class MaoPao {
	int[] initArray = { 0, 1, 2, 3, 8, 7, 6, 6 };

	/*
	 * 冒泡排序法 算法：第1趟排序找出对数组(array[0]--array[length-1])中最大的一个，把它放大array[length-1]
	 * 第2趟排序找出对数组(array[0]--array[length-2])中最大的一个，把它放大array[length-2] ......
	 * 第n趟排序找出对数组(array[0]--array[length-n])中最大的一个，把它放大array[length-n]
	 */
	// @Test
	public static void main(String[] args) {
		new MaoPao().testBubbleSort();
	}

	public void testBubbleSort() {
		// 初始化数组
		int[] lastArray = initArray;
		// 外层循环lastArray.length-1次循环
		for (int i = lastArray.length - 1; i > 0; i--) {
			// 外层循环i次循环
			for (int j = 0; j < i; j++) {
				// 当前面的数据大于后面的数据，把两个数据进行交换
				if (lastArray[j] > lastArray[j + 1]) {
					int tempInt = lastArray[j];
					lastArray[j] = lastArray[j + 1];
					lastArray[j + 1] = tempInt;
				}
			}
		}
		System.out.println(Arrays.toString(lastArray));
	}

	// 选择排序和冒泡基本算法差不多，也是外层循环进行n次，在内部循环是每次都把最大的数据换到本次循环的最后面
	// 比如第一次把最大的换到第n个，第2次换到第n-1上
	@Test
	public void testSelectSort() {
		// 初始化数组
		int[] lastArray = initArray;
		// 外层循环lastArray.length-1次循环
		for (int i = 0; i < lastArray.length; i++) {
			for (int j = 0; j < lastArray.length - 1 - i; j++) {
				// 当第j个数据大于本次循环的最后一个数据时把两个数据进行交换
				if (lastArray[lastArray.length - 1 - i] < lastArray[j]) {
					int tempInt = lastArray[j];
					lastArray[j] = lastArray[lastArray.length - 1 - i];
					lastArray[lastArray.length - 1 - i] = tempInt;
				}
			}
		}
		System.out.println(Arrays.toString(lastArray));
	}
}